home *** CD-ROM | disk | FTP | other *** search
/ Collection of Internet / Collection of Internet.iso / infosrvr / dev / www_talk.930 / 000416_connolly@pixel.convex.com _Tue Dec 1 18:28:35 1992.msg < prev    next >
Internet Message Format  |  1994-01-24  |  6KB

  1. Return-Path: <connolly@pixel.convex.com>
  2. Received: from dxmint.cern.ch by  nxoc01.cern.ch  (NeXT-1.0 (From Sendmail 5.52)/NeXT-2.0)
  3.     id AA01687; Tue, 1 Dec 92 18:28:35 MET
  4. Received: by dxmint.cern.ch (5.65/DEC-Ultrix/4.3)
  5.     id AA23023; Tue, 1 Dec 1992 18:41:41 +0100
  6. Received: from pixel.convex.com by convex.convex.com (5.64/1.35)
  7.     id AA13710; Tue, 1 Dec 92 11:41:38 -0600
  8. Received: from localhost by pixel.convex.com (5.64/1.28)
  9.     id AA22962; Tue, 1 Dec 92 11:41:34 -0600
  10. Message-Id: <9212011741.AA22962@pixel.convex.com>
  11. To: timbl@nxoc01.cern.ch
  12. Cc: jim@wilbur.njit.edu (Jim Whitescarver), www-talk@nxoc01.cern.ch
  13. Subject: Re: The <PRE> tag 
  14. In-Reply-To: Your message of "Tue, 01 Dec 92 16:41:19 +0100."
  15.              <9212011541.AA01877@www3.cern.ch> 
  16. Date: Tue, 01 Dec 92 11:41:34 CST
  17. From: Dan Connolly <connolly@pixel.convex.com>
  18.  
  19.  
  20. >Perhaps we should have all three.
  21.  
  22. >I understand that these are the only SGML-conformant combinations.  Is
  23. >this too much of a mess?
  24.  
  25. I think so. The processing should be broken into two parts: SGML parsing,
  26. and application processing. The significance of newlines is an application
  27. issue: the SGML parser never throws out newlines in data (it does throw
  28. out newlines between tags and in some other places that I don't fully
  29. understand).
  30.  
  31. These are the choices for SGML parsing:
  32.  
  33.     CDATA        all characters treated as data.
  34.             Terminated by </A where A is any letter.
  35.     RCDATA        characters and entities only. &entity; recognized.
  36.             Terminated by </A as above
  37.     mixed content    tags and #PCDATA.
  38.             Tags, entity references, comments, etc. recognized.
  39.             The pattern of tags and data is regulated
  40.             by the element declaration.
  41.     element content    tags only. Pattern of tags is regulated.
  42.     ANY        like mixed content, but tags aren't regulated
  43.  
  44. CDATA is simplest to process, but you can't do things like
  45.  
  46.     char* any_string;
  47.     printf("<XMP>%s</XMP>", any_string);
  48.  
  49. because any_string might contain </A, and you're screwed.
  50.  
  51. RCDATA is capable of the above construct, but at a cost:
  52.  
  53.     char* any_string;
  54.     char* rcdata = HTML_replace_specials(any_string);
  55.     printf("<XMP>%s</XMP>", rcdata);
  56.     free(rcdata);
  57.  
  58. where HTML_replace_specials changes '<' to < (to prevent </A), '>' to >
  59. (to prevent ]]>, the marked-section close delimiter. Ugh!), and
  60. '&' to & (to prevent &xxx from being mistaken for an entity reference).
  61.  
  62. But if you're going to go to that trouble, you might as well
  63. use mixed content. That's why I changed my mind about using RCDATA
  64. for XMP and LISTING elements.
  65.  
  66. My current DTD only uses element content (for the HTML document element*),
  67. CDATA (for XMP and LISTING) and mixed content (for everything else).
  68.  
  69. As to your suggestions...
  70.  
  71. ><XMP>        newlines significant        no anchors    CDATA
  72.  
  73. This is already supported, except that most implementations don't
  74. quite parse CDATA correctly. The "newlines significant" isn't a
  75. parsing issue. It's an issue of how the application processes character
  76. data. Let's call this mode of application processing where the
  77. characters are written to the screen as-is, rather than
  78. typeset into paragraphs TYPEWRITER mode. We'll call the default TYPESET mode.
  79.  
  80. ><PRE>        newlines significant        no anchors    RCDATA
  81.  
  82. The only implementation of the PRE tag that I know of looks more like:
  83.  
  84. <PRE>        newlines significant        anchors        PCDATA
  85.  
  86. It's actually pretty clean: you use
  87. mixed content SGML parsing, and TYPEWRITER application processing.
  88. So I changed the name to TYPEWRITER, for no good reason, really.
  89.  
  90. The newlines significant/no anchors/RCDATA is what I suggested for
  91. XMP and LISTING, so they could contain any string. But since current
  92. implementations don't process entities in these elements, it's
  93. not worth it.
  94.  
  95. ><FIXED>        newlines not significant     anchors        PCDATA
  96.  
  97. This introduces a third application mode besides RAW and TYPESET:
  98. it's kinda like RAW, but you toss the newlines, and start a newline
  99. at every <P> tag. I don't like it.
  100.  
  101. >Tony, can you make a similar patch for <fixed> as above for Midas?
  102.  
  103. You could, but it doesn't fit neatly into the current architecture.
  104. Tony wrote one widget to do TYPESET processing (SGMLCompoundText)
  105. and one to do TYPEWRITER processing (SGMLPlainText). The FIXED
  106. widget calls for a new widget, or a modification of SGMLPlainText
  107. to ignore newlines in some cases. (You can't just use the SGMLCompoundText
  108. with a fixed-width font, because it compresses whitespace.)
  109.  
  110. >I have put Dan's new spec (which contains <typewriter> -- what's going on,  
  111. >Dan?!) in the web at  
  112. >http://info.cern.ch/hypertext/WWW/MarkUp/Connolly/MarkUp.html with a link from
  113. >the current spec.
  114.  
  115. Thanks.
  116.  
  117. >  The DTD was not in the tar file, so Dan's previous one is  
  118. >linked in. This includes all Dan's test HTML.
  119.  
  120. Ack! I think the DTD is pretty important. I'll get the new
  121. one there ASAP. I highly suggest that _all_ data providers grab the DTD
  122. and the sgmls parser and try validating samples of the data they're
  123. serving up. It's the quickest and surest way to check for compliance.
  124. I need to write a section for data providers in the spec.
  125.  
  126. >I would like to include <HEADER> and <BODY> tags too.
  127.  
  128. * I wrestled with this at great length to come up with a DTD
  129. lends _some_ structure to HTML wihthout clashing badly with
  130. existing data.
  131.  
  132. The document element declaration is:
  133. <!ELEMENT HTML O O  ((TITLE? & NEXTID? & ISINDEX?), BODY)>
  134.  
  135. The O O means the HTML start and end tags can be omitted.
  136. They'll be inferred by the parser. Since there's no #PCDATA
  137. in the content model, it has element content, so that
  138. whitespace between tags is thrown out.
  139.  
  140. The TITLE, NEXTID, and ISINDEX can come in any order, and
  141. they can are optional, but they can appear at most once,
  142. and they have to be before the BODY.
  143.  
  144. I made the <BODY> tags minimizable so current
  145. HTML is legal. I couldn't seem to work in a HEADER
  146. element the same way.
  147.  
  148. Dan
  149.